GitHub Actionsでビルド済みファイルを添付したリリースを自動生成するようにした
https://gyazo.com/0d2d0cd7f1ac009bfd404480bf81f9d2 https://gyazo.com/27129375124c2b5ab2ae69ce40a50a6e
releaseブランチへ出したPRがマージされると、自動的にビルド済みファイルを添付したリリースを作成するようにした これ作ったことないtakker.icon
腰が重くて……
簡単に作れるのかな?
井戸端民は当たり前にやっているけれど、自分にとってはまあまあな進歩
序盤調べるのがめんどくさかっただけで、意外とLinuxの知識だけでどうにかなるものなんだなーって気がした
とりあえず、作ったworkflowファイルを貼っておきますMijinko_SD.icon https://code2svg.vercel.app/svg/https://raw.githubusercontent.com/MijinkoSD/decorate_on_stdout/0.1.0/.github/workflows/create-release.yml#.jpg https://github.com/MijinkoSD/decorate_on_stdout/blob/0.1.0/.github/workflows/create-release.yml
Actionsページに表示される名前
code:create-release.yml
name: Create Release
Actionsの実行条件
code:create-release.yml
on:
pull_request:
branches:
- release
Actionsの実行内容
code:create-release.yml
jobs:
ジョブの名前(create_release)
code:create-release.yml
create_release:
最新版のUbuntu仮想環境上でジョブを実行する
code:create-release.yml
runs-on: ubuntu-latest
secretsとは書いてあるが、GITHUB_TOKENはデフォルトで存在しているので、リポジトリのsecrets設定をいじる必要はない code:create-release.yml
permissions:
contents: write
ジョブの詳細な実行内容
code:create-release.yml
steps:
よくわかんないけれど、チェックアウトしないと動かない
そういうものなので、一々調べてはいないし、きっと詳しい誰かが追記してくれる
code:create-release.yml
- name: Checkout code
uses: actions/checkout@v3
PythonをUbuntu仮想環境上に導入する
code:create-release.yml
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
3.10使っているけれど、自分の開発環境は3.11なんだよなぁ
使えそうだったら直しておくか
code:create-release.yml
- name: Install dependencies
run: |
python -m pip install -U pip
pip install build setuptools
runにはUbuntu上で実行するコマンドをそのまま書く
run:の直後に|を書いた後、複数行のコマンドを改行区切りで書けば、それぞれのコマンドを順番に実行してくれる
パッケージをビルドする
code:create-release.yml
- name: Build package
run: python -m build
ビルド済みのファイルは./dist/内に保存される
リリースを作成する
こっちは、リリースの作成とassetの添付の両方を一度にこなすことができる
code:create-release.yml
- name: Create release
uses: softprops/action-gh-release@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
name: ${{ github.event.pull_request.title }}
tag_name: ${{ github.event.pull_request.title }}
body: ${{ github.event.pull_request.body }}
files: ./dist/*
draft: false
prerelease: false
前述のpermissionの指定がおかしいとここでエラーを吐くので注意(1敗)
リリース関係しかいじらないので、contentsにwrite権限を持たせるだけで大抵は事足りると思う
nameはリリースの名前を入れる
今回はプルリクエストの名前をそのまま流用している
tag_nameはリリースと同時に作成するタグの名前
bodyはリリースの本文
プルリクエスト作成時の本文をそのまま流用している
filesはassetに入れるファイル
draftとprereleaseは使用しないので明示的にfalseに設定してある
とはいえデフォルト値がfalseなので、別に書かなくても同じ